基于查询语句创建视图或更新已存在的视图。
使用限制
- 视图可以引用其它视图,但不能引用自己,也不能循环引用。
- 不允许向视图写入数据,例如使用
insert into
或者insert overwrite
操作视图。
命令格式
create [or replace] view [if not exists] <view_name>
[(<col_name> [comment <col_comment>], ...)]
[comment <view_comment>]
as <select_statement>;
参数说明
参数 | 是否必选 | 说明 |
---|---|---|
or replace | 否 | 更新视图需要携带该字段。 |
if not exists | 否 | 如果没有指定if not exists,在视图已经存在时用create view 会导致异常。这种情况可以用create or replace view 重建视图,重建后视图本身的权限保持不变。
|
view_name | 是 | 待创建或更新的视图的名称。 |
col_name | 是 | 待创建视图包含的列名称。 |
col_comment | 否 | 待创建视图的列的注释。 |
view_comment | 否 | 待创建视图的注释。 |
select_statement | 是 | select 查询语句,是视图的数据来源,您必须有视图所引用表的读权限。视图只能包含一个有效的select 语句。
|
说明 创建或更新好视图后,如果视图引用的表发生了变更,有可能导致视图无法访问,例如删除了引用的表。您需要自行维护引用表及视图之间的对应关系。
使用示例
- 示例1:基于表sale_detail创建视图sale_detail_view。
create view if not exists sale_detail_view (store_name, customer_id, price, sale_date, region) comment 'a view for table sale_detail' as select * from sale_detail;
- 示例2:基于表sale_detail更新视图sale_detail_view。
create or replace view if not exists sale_detail_view (store_name, customer_id, price) comment 'a view for table sale_detail' as select shop_name, customer_id, total_price from sale_detail;
相关命令
- ALTER VIEW:修改已创建视图的名称或所有人。
- DESC VIEW:查看已创建的视图的信息。
- DROP VIEW:删除已创建的视图。